package com.liyue.valueutil;

import static com.liyue.valueutil.ArrayUtil.toStringArray;
import static com.liyue.valueutil.ArrayUtil.whether;

import android.content.Context;
import android.util.DisplayMetrics;
import android.util.Log;

import com.liyue.utillib.LogUtils;

import java.util.Iterator;
import java.util.Map;

public class MapUtil {


    private static String TAG = "MapUtil";
    //根据value值获取到对应的一个key值

    /**
     * @param map   存储MAP集
     * @param value 要比较的数组
     * @param <T>   泛型
     * @return 返回值为泛型
     */
    public static <T> T getKey(Map<T, int[]> map, int[] value) {
        T key;
        int num = 0;
        for (T getKey : map.keySet()) {
            LogUtils.d("getKey: " + getKey);
            if (whether(map.get(getKey), value)) {
                LogUtils.d(TAG, "getKey: 配对成功");
                key = getKey;
                LogUtils.d(TAG, "getKey: " + num);
                return key;
            }
            num++;
        }
        return null;
    }

    /**
     * map中是否存在values
     *
     * @param map
     * @param arr
     * @param <T>
     * @return
     */
    public <T> boolean isExist(Map<T, int[]> map, int[] arr) {
        toStringArray(arr);
        Iterator<Map.Entry<T, int[]>> it = map.entrySet().iterator();
        while (it.hasNext()) {
            Map.Entry<T, int[]> entry = it.next();
            int[] b = entry.getValue();
            toStringArray(b);
            if (whether(b, arr)) {
                return true;
            }
        }
        return false;
    }

    /**
     * map类型专用迭代器
     *
     * @param maps
     */
    public <T> void iterators(Map<T, int[]> maps) {
        Iterator<Map.Entry<T, int[]>> it = maps.entrySet().iterator();
        while (it.hasNext()) {
            Map.Entry<T, int[]> entry = it.next();
            int[] b = entry.getValue();
            toStringArray(b);
        }
    }
}
